import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class demo2 {
    public static ArrayList findNum(int a) {
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 2; i*i <= a; i++) {
            if (a % i == 0) {
                list.add(i);
                //这里能降低很多时间复杂度
                //将符合条件的数的因数加进来
                if(a/i!=i) {
                    list.add(a/i);
                }
            }
        }
        return list;
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            int b = in.nextInt();
            int[] ret = new int[b+1];
            Arrays.fill(ret, Integer.MAX_VALUE);
            ret[a] = 0;
            for (int i = 0; i < b; i++) {
                if (ret[i] == Integer.MAX_VALUE) {
                    continue;
                }
                ArrayList<Integer> list = findNum(i);
                for (int j :
                        list) {
                    if (i + j <= b && ret[i + j] != Integer.MAX_VALUE) {
                        ret[i + j] = Math.min(ret[i] + 1, ret[i + j]);
                    } else if (i + j <= b && ret[i + j] == Integer.MAX_VALUE) {
                        ret[i + j] = ret[i] + 1;
                    }
                }
            }
            if (ret[b] == Integer.MAX_VALUE) {
                System.out.println(-1);
            } else {
                System.out.println(ret[b]);
            }
            //再用list里的所有数再做刚才的动作 直到a>b

        }
    }
}